def convert_height(height_str):
    """
    将身高从米转换为厘米，如果输入已经是厘米则直接使用。
    :param height_str: 身高字符串，可能包含小数点
    :return: 身高数值（厘米）
    """
    try:
        height_value = float(height_str)
        if height_value < 1.0:  # 身高小于1.0米，认为是厘米
            return int(height_value * 100)  # 转换为厘米
        else:  # 身高大于或等于1.0米，转换为厘米
            return int(height_value * 100)
    except ValueError:
        print("无效的身高输入，请输入一个数字。")
        return None

def get_user_input(prompt, data_type, condition):
    """
    获取并验证用户输入。
    :param prompt: 输入提示
    :param data_type: 输入数据类型，如 int 或 float
    :param condition: 输入条件函数，输入必须满足此条件
    :return: 验证后的用户输入
    """
    while True:
        user_input = input(prompt)
        try:
            value = data_type(user_input)
            if condition(value):
                return value
            else:
                print("输入不满足条件，请重新输入。")
        except ValueError:
            print("无效的输入，请确保输入的是正确的数据类型。")

def calculate_bmr(sex, age, weight, height):
    """
    根据哈里斯-贝内迪克特方程计算基础代谢率（BMR）。
    :param sex: 性别，'m' 代表男性，'f' 代表女性
    :param age: 年龄（岁）
    :param weight: 体重（千克）
    :param height: 身高（厘米）
    :return: 基础代谢率（卡路里/天）
    """
    if sex == 'm':
        return 66 + (13.75 * weight) + (5 * height) - (6.76 * age)
    elif sex == 'f':
        return 655 + (9.56 * weight) + (1.85 * height) - (4.68 * age)
    else:
        raise ValueError("性别输入错误，请输入'm'或'f'。")

def health_analysis(bmr):
    """
    根据BMR值提供健康分析。
    :param bmr: 基础代谢率（卡路里/天）
    :return: 健康分析的字符串
    """
    if bmr < 1200:
        return "您的BMR值较低，可能表明您的身体基础代谢较慢。"
    elif 1200 <= bmr <= 2200:
        return "您的BMR值处于正常范围。"
    else:
        return "您的BMR值较高，可能表明您的身体基础代谢较快。"

def main():
    print("欢迎使用基础代谢率（BMR）健康分析程序！")
    sex = get_user_input("请输入您的性别（'m' 代表男性，'f' 代表女性）：", str.lower, lambda x: x in ['m', 'f'])
    age = get_user_input("请输入您的年龄（岁）：", int, lambda x: 1 <= x <= 120)
    height_str = input("请输入您的身高（可以输入米或厘米，例如 1.75 或 175.5）：")
    height_cm = convert_height(height_str)
    if height_cm is None:
        print("程序结束，因为身高输入无效。")
        return

    weight = get_user_input("请输入您的体重（千克）：", float, lambda x: x > 0)

    bmr = calculate_bmr(sex, age, weight, height_cm)
    analysis = health_analysis(bmr)

    print(f"\n根据您的信息，您的基础代谢率（BMR）是：{bmr} 卡路里/天。")
    print(analysis)

if __name__ == "__main__":
    main()